package br.com.controller.aluno;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import com.itextpdf.text.DocumentException;

import br.com.arquitetura.controlador.AbstractMBean;
import br.com.arquitetura.excecoes.BDException;
import br.com.controller.acesso.MBAcessoUsuario;
import br.com.data.hibernate.AlunoHibernateDAO;
import br.com.model.entidade.Aluno;
import br.com.model.entidade.Aula;
import br.com.model.entidade.Avaliacao;
import br.com.model.entidade.Usuario;
import br.com.util.relatorios.RelatoriosAlunos;

@ManagedBean
@ViewScoped
public class MBIndexAluno extends AbstractMBean<Aluno>{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private AlunoHibernateDAO alunoHibernateDAO ;
	private Aluno aluno;
	private Long idIrAula;
	private List<Avaliacao> avaliacaos;
	
	public MBIndexAluno() {
		// TODO Auto-generated constructor stub
		alunoHibernateDAO = (AlunoHibernateDAO) getBean("alunoHibernateDAO");
		MBAcessoUsuario mb = new MBAcessoUsuario();
		Usuario user = mb.getUsuario();
		List<Aluno> lista;
		try {
			lista = alunoHibernateDAO.getByField(Aluno.class,"usuario", user);
			if (!lista.isEmpty()){
				aluno = lista.get(0);
			}
		} catch (BDException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
		
		avaliacaos = new ArrayList<Avaliacao>();
		
		for (Aula aula : aluno.getTurma().getAulas()) {
			avaliacaos.addAll(aula.getAvaliacoes());
		}
		HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
		session.removeAttribute("idAulaVizualacao");
		
	}
	
	public void imprimirHistorico(){
		RelatoriosAlunos relatorio = new RelatoriosAlunos();
		
		try {
			aluno = alunoHibernateDAO.getById(Aluno.class, aluno.getId());
			relatorio.historico(aluno);
			
			FacesContext.getCurrentInstance().getExternalContext().redirect("/educacao/pdf/historico.pdf");
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	public void irTurma(){
		HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
		session.setAttribute("idAulaVizualizacao", idIrAula);
		try {
			FacesContext.getCurrentInstance().getExternalContext().redirect("turma/index.jsf");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public Aluno getAluno() {
		return aluno;
	}
	
	public Long getIdIrAula() {
		return idIrAula;
	}

	public void setIdIrAula(Long idIrAula) {
		this.idIrAula = idIrAula;
	}

	public void setAluno(Aluno aluno) {
		this.aluno = aluno;
	}

	public List<Avaliacao> getAvaliacaos() {
		return avaliacaos;
	}

	public void setAvaliacaos(List<Avaliacao> avaliacaos) {
		this.avaliacaos = avaliacaos;
	}
	
	
}
